package com.xiaoKe.zhonghzu.global.base;

import android.content.Context;
import android.util.AttributeSet;
import androidx.core.content.ContextCompat;
import com.bin.david.form.core.SmartTable;
import com.bin.david.form.core.TableConfig;
import com.bin.david.form.data.CellInfo;
import com.bin.david.form.data.column.Column;
import com.bin.david.form.data.format.bg.BaseBackgroundFormat;
import com.bin.david.form.data.format.bg.BaseCellBackgroundFormat;
import com.bin.david.form.data.format.bg.ICellBackgroundFormat;
import com.bin.david.form.data.style.FontStyle;
import com.xiaoKe.zhonghzu.R;

/**
 * @ProjectName : app
 * @Author : Shijingna
 * @Time : 2023/3/22 4:52 下午
 * @Description :表格框架自封装 - 优化字体大小
 */
public class SmartTableTool extends SmartTable {
    // 定义字体大小，单位为sp
    private static final int TABLE_TITLE_TEXT_SIZE = 16; // 表格标题字体大小
    private static final int COLUMN_TITLE_TEXT_SIZE = 16; // 列标题字体大小
    private static final int CONTENT_TEXT_SIZE = 14; // 内容字体大小

    public SmartTableTool(Context context) {
        super(context);
        initAnnotation();
    }

    public SmartTableTool(Context context, AttributeSet attrs) {
        super(context, attrs);
        initAnnotation();
    }

    public SmartTableTool(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initAnnotation();
    }

    private void initAnnotation() {
        // 设置表格标题名称文字样式
        getConfig().setColumnTitleVerticalPadding(20);
        getConfig().setTableTitleStyle(new FontStyle(sp2px(TABLE_TITLE_TEXT_SIZE), getResources().getColor(R.color.color333)));
        // 设置表格标题文字样式
        getConfig().setColumnTitleStyle(new FontStyle(sp2px(COLUMN_TITLE_TEXT_SIZE), getResources().getColor(R.color.color333)));
        // 设置表格主体内容文字样式
        getConfig().setContentStyle(new FontStyle(sp2px(CONTENT_TEXT_SIZE), getResources().getColor(R.color.color333)));

        getConfig().setColumnTitleBackground(new BaseBackgroundFormat(getResources().getColor(R.color.colorF1)));

        ICellBackgroundFormat<Column> background = new BaseCellBackgroundFormat<Column>() {
            @Override
            public int getBackGroundColor(Column column) {
                return ContextCompat.getColor(getContext(), R.color.colorF1);
            }

            @Override
            public int getTextColor(Column column) {
                return ContextCompat.getColor(getContext(), R.color.color333);
            }
        };

        //设置列标题背景和颜色
        getConfig().setColumnCellBackgroundFormat(background);

        //设置是否显示顶部序号列
        getConfig().setShowXSequence(false);
        //设置是否显示表格标题
        getConfig().setShowTableTitle(false);
        // 是否显示左侧序号列
        getConfig().setShowYSequence(false);

        //奇偶行颜色
        ICellBackgroundFormat<CellInfo> backgroundFormat = new BaseCellBackgroundFormat<CellInfo>() {
            @Override
            public int getBackGroundColor(CellInfo cellInfo) {
                if (cellInfo.row % 2 != 0) {
                    return ContextCompat.getColor(getContext(), R.color.colorF1);
                }
                return TableConfig.INVALID_COLOR;
            }

            @Override
            public int getTextColor(CellInfo cellInfo) {
                return TableConfig.INVALID_COLOR;
            }
        };

        getConfig().setContentCellBackgroundFormat(backgroundFormat);
        //设置网格列 padding
        getConfig().setVerticalPadding(10);
        getConfig().setHorizontalPadding(10);
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     */
    private int sp2px(float spValue) {
        final float fontScale = getContext().getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }
}